//#include "Stack.h"

//#include <iostream>
//
//using namespace std;
//
//class Date
//{
//public:
//	Date(int year = 1,int month = 1,int day = 1)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	void Print()
//	{
//		cout << _year << "/" << _month << "/" << _day << endl;
//	}
//
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//void func(Date())
//{
//	Date().Print();
//}
//
//int main()
//{
//	//Date(2024,12,16).Print();
//	Date().Print();
//	return 0;
//}



//int main()
//{
//	Stack<int> s1;
//	s1.Push(2);
//	s1.Push(1);
//	s1.Push(6);
//	s1.Push(4);
//	while (!s1.Empty())
//	{
//		cout << s1.Top() << " ";
//		s1.Pop();
//	}
//	cout << endl;
	//Stack<char> s2;
	//s2.Push('x');
	//s2.Push('f');
	//s2.Push('c');
	//s2.Push('k');
	//while (!s2.Empty())
	//{
	//	cout << s2.Top() << " ";
	//	s2.Pop();
	//}
	//return 0;
//}

//class A
//{
//public:
//	A(int a = 0, int b = 2)
//		: _a(a)
//		, _b(b)
//	{
//		cout << "A(): " << _a  << " " << _b << endl;
//	}
//	~A()
//	{
//		cout << "~A():" << this << endl; 
//	}
//private:
//	int _a;
//	int _b;
//};

//int main()
//{
//	A* p1 = (A*)malloc(sizeof(A));
//	new(p1)A;
//	p1->~A();
//	free(p1);
//	A* p2 = (A*)operator new(sizeof(A));
//	new(p2)A(2, 5);
//	p2->~A();
//	operator delete (p2);
//	return 0;
//}

//int main()
//{
//	//int arr[] = { 1,2,4,7,4,3,33,12,10,12 };
//	//for (auto& e : arr)
//	//{
//	//	cout << e << " ";
//	//}
//	//for (auto& e : arr)
//	//{
//	//	cout << e * 2 << " ";
//	//}
//}

#include <assert.h>

namespace WX
{
	class string
	{
	 public:
		 char& operator[](int pos)
		 {
			 assert(pos < _size);
			 return _arr[pos];
		 }
	 private:
		char* _arr;
		int _size;
		int _capacity;
	};
}

#include <string.h>
#include <iostream>

using namespace std;

void StringTest()
{
	string s1;
	string s2("bacdsfd");
	string s3(s2);
	string s4(s2, 5);

	//cout << s1 << endl;
	//cout << s2 << endl;
	//cout << s3 << endl;
	//cout << s4 << endl;
	//cout << sizeof(s2) <<endl;
	//cout << sizeof(s1) <<endl;
	//cout << sizeof(s3) <<endl;

	//for (int i = 0; i < s2.size(); i++)
	//{
	//	cout << s2[i] << " ";
	//}

	//string::iterator it = s2.begin();
	auto it = s2.begin();
	while (it != s2.end())
	{
		cout << *it << " ";
		it++;
	}
	cout << endl;

	//string::reverse_iterator rit = s2.rbegin();
	auto rit = s2.rbegin();
	while (rit != s2.rend())
	{
		cout << *rit << " ";
		rit++;
	}

	//for (auto e : s2)
	//{
	//	cout << e << " ";
	//}

}

//int main()
//{
//	StringTest();
//	return 0;
//}